"""server URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, re_path
from back.views import *

urlpatterns = [
    path('admin/', admin.site.urls),
    # 登录接口，get测试是否登录，post执行登录
    path('login/', Login.as_view()),
    # 退出接口，post
    path('logout/', Logout.as_view()),

    # 获取菜单栏menu数据
    path('menu/', Menu.as_view()),
    # get获取users页面用户数据，接收参数page默认1，num默认8个，search默认为空不搜索
    path('users/', UserData.as_view()),
    # put请求,修改用户的状态，id为用户id（必填）,status为要修改成的状态（必填）
    path('users/<int:id>/<int:status>/', UserData.as_view()),
    # post请求，username必填,password(新增则必填),email,mobile选填，id不填为新增，填写为修改
    path('setuser/', SetUser.as_view()),
    # post请求，用于删除用户
    path('deleteuser/', DelUser.as_view()),

    # post请求，用于添加角色，name必填，direction选填
    path('add_role/', AddRole.as_view()),
    # post请求，用于修改角色信息,id/name必填，direction选填
    path('set_role/', SetRole.as_view()),
    # post请求，用于删除角色,id必填
    path('del_role/', DelRole.as_view()),
    # post请求，用于设置用户的角色
    path('set_user_role/', SetUserRole.as_view()),
    # get请求获取权限列表 type可以为tree或list
    path('rights/<str:type>/', Rights.as_view()),
    # get请求获取角色列表及对应权限
    path('roles/', Roles.as_view()),
    # post请求，重新设置id下的权限
    path('roles/<int:id>', Roles.as_view()),
    # put请求，删除id下的rid及其子权限
    path('roles/<int:id>/<int:rid>/', Roles.as_view()),

    # get请求，获取全部分类
    path('categories/', Categories.as_view()),
    # post请求，添加分类type=add,修改分类type=set,删除分类type=del
    path('categories/<str:type>/', Categories.as_view()),
    # get请求，获取params页面数据，获取动态参数type=dynamic，获取静态属性type=static，获取所有type=all
    # cid 要获取数据的三级分类id
    path('params/<str:type>/<int:cid>/', Params.as_view()),
    # 用于参数增、参数值增、参数名改、参数值删、参数删
    # post请求，
    # 增加参数mode=add，必填参数name,cid,type
    # 设置（修改）参数值mode=set_values，必填参数id，values
    path('params/<str:mode>/', Params.as_view()),

    # get请求，获取商品列表，必填参数 page页码，num每页数量
    path('goods/', Goods.as_view()),
    # post请求，添加商品type=add, 删除商品type=del
    path('goods/<str:type>/', Goods.as_view()),

    # get请求，获取订单列表，必填参数 page页码，num每页数量
    path('orders/', Orders.as_view()),
    # post请求，修改订单type=set
    path('orders/<str:type>/', Orders.as_view()),

    # get请求，查询物流记录，
    path('express/<str:express_code>/', Express.as_view()),

    # post请求，上传文件接口
    re_path('upload/(.+?)/$', Upload.as_view()),

    # 项目部署最终入口
    re_path('', Index.as_view())
]
